//tag封装
export interface Tag {
  path: string;
  name: string;
  effect: any
}
// 公共表格的封装
export interface ColumnTable {//表头接口
  prop: string;//绑定的字段
  label: string;//表头显示的文字
  tooltip?: boolean;//是否溢出时显示tooltip
  align?: string;//对齐方式
  width?: string;//宽度
  fixed?: string;//固定方向
  slot?: boolean;//插槽
  sortable?: boolean;//排序
}
export interface ColumnBtn {//表操作接口
  label: string;//表头名字
  align?: string;//对齐方式
  width?: string;//宽度
  fixed?: string;//固定方向
  btn: ColumnBtnObj[];//表按钮
}
export interface ColumnBtnObj {//表按钮接口
  name: string;//按钮方法名字
  text: string;//按钮名字
  routerName?: string;//按钮关键字 跳转页面的名字
  routerId?: string;//routerId定义跳转页面传参值的字段 routerId必须和routerName一起用
  isLook?: string;//跳转页面之后是否只能查看  isLook必须和 routerName一起用
  api?: string;//接口地址 api和http必须一起用
  http?: any;//接口方法
  confirm?: boolean;//是否需要二次确认 
  confirmText?: string;//二次确认提示文字的字段 confirmText必须和confirm一起用
  refresh?: boolean;//接口调用完之后是否需要刷新表格 必须和  api、http必须一起用 true是需要刷新
  params?: any;//接口传参
  hide?: BooleanFn;//按钮是否隐藏 写相应逻辑
  type?: any;//按钮样式
  color?: string;//颜色
}
//公共表格 父级传入子级的数据接口
export interface ParentTable {
  listApi: string;//列表接口
  listHttp: string;//列表接口方法
  column: ColumnTable[];//表头
  search?: any;//搜索条件
  columnBtn?: ColumnBtn;//操作按钮
  selection?: boolean;//true 显示多选
  index?: boolean;//true 显示序号
  height?: string;//设置高度
  noPage?: boolean;//true 没有分页
  noRender?: boolean;//true 默认不渲染表格
  noOperate?: boolean;//true 没有操作栏（比如查看进来的页面，表格没有操作栏，编辑进来的页面表格有删除之类操作）
}
//返回布尔值的方法接口
export interface BooleanFn {
  (m: any): boolean;
}
//公共表格上面的搜索 以及表单
export interface SearchParam {
  disabled?: boolean;
  key: string;//搜索接口需要传的字段
  styleType: 'input' | 'select' | 'radio' | 'checkbox' | 'date' | 'time' | 'switch' | 'upload' | 'uploads' | 'slot' | 'inputDis' | 'selectDis',//string;//搜索的类型 input输入框 select下拉框 radio单选 checkbox复选框 date日期 time时间  switch开关
  value: any;//接口字段对应的值
  label?: string;//搜索条件左边的名字
  labelShow?: boolean;//搜索条件左边的名字是否展示  必须和label一起用
  placeholder?: string;//提示文字
  startPlaceholder?: string;//提示文字 开始时间提示要和type：daterange,monthrange,datetimerange; styleType：date 一起用
  endPlaceholder?: string;//提示文字 结束时间提示 要和type：daterange,monthrange,datetimerang; styleType：date 一起用
  data?: any;//下拉框 复选 单选等一些选择的数据
  type?: any;//类型
  format?: any;//日期格式 必须和styleType（date或time）一起用
  valueFormat?: any;//日期格式 必须和styleType（date或time）一起用
  action?: string;//上传图片地址
  accept?: string;//上传支持的图片格式
  headers?: any;//设置上传的请求头部
  name?: string;//上传的文件字段名 file
  maxUploads?: number;//多图上传 上传最多上传数量
  start?: string;//styleType===time时配合使用  开始时间
  end?: string;//styleType===time时配合使用  结束时间
  step?: string;//styleType===time时配合使用  步长
  hide?: BooleanFn;//当前选项是否隐藏
  width?: string;//宽度
  labelWidth?: string;//文字宽度
  inputWidth?: string;//输入框宽度
  clearable?: boolean;//去掉清除
  length?: string;//可输入字符长度
}
//公共表格上面的搜索 父级传入子级的数据接口
export interface ParentSearch {
  searchForm?: SearchParam[];//搜索条件
  searchBtn?: ColumnBtnObj[];//搜索右边的操作按钮
  checkboxSelect?: string[];//表格多选 选中的值
  noOperate?: boolean;//true 没有操作栏（比如查看进来的页面，表格没有操作栏，编辑进来的页面搜索右边有新增 批量删除之类操作）
}
//分页接口
export interface PaginationDate {
  pageSize: number;//每页显示条目个数
  currentPage: number;//当前页数
  total: number;//总页数
  pageArr: number[];//分页数组
  small?: boolean;//是否用小型模式
}
//公共表单 父级传入子级的数据接口
export interface ParentForm {
  formItem: SearchParam[];
  rules?: any;//
  size?: any;
  btn?: ColumnBtnObj[]
  // noOperate?:boolean;//true 没有操作栏（比如查看进来的页面，表格没有操作栏，编辑进来的页面搜索右边有新增 批量删除之类操作）
}

//只传一个参数拼接到地址上去
export interface GetUrl {
  id: string
}
//下拉框
export interface SelectObj {
  label: string;
  value: string;
  name?: string;
  areaCode?: string;
}